package nan.String;

import java.lang.reflect.Field;
import java.util.Scanner;

public class Main {
/*
字符串逆序
 */
    public static String reverse(String str,int begin,int end){
        char[] data = str.toCharArray();//把字符串转成字符串组
        while(begin<end){//开始逆序，用交换
            char tmp=data[begin];
            data[begin]=data[end];
            data[end]=tmp;
            begin++;
            end--;
        }
        //return new String(data);
        return String.copyValueOf(data);//返回string型
    }

    //abcdef 3
    public static String func(String str,int k){
        String str1=reverse(str,0,k-1);//先把前三个逆序
        String str2=reverse(str1,k,str.length()-1);//再把剩余的数据逆序
        String str3=reverse(str2,0,str.length()-1);//最后整体逆序
        return str3;
    }

    public static void main16(String[] args) {
        String str="abcdef";
        System.out.println(func(str,3));
    }



    public static void main15(String[] args) {
        String str="abcdef";
        String ret=reverse(str,0,str.length()-1);
        System.out.println(ret);
    }
    public static String func1(String string) {
        String n=" ";
        String[] result = string.split(" ");// 按照空格拆分
        for (String s : result) {//result["abc" "def"]
            n=n+s;//n就等于“ ”拼接“abc”；
        }
        return n;
    }
    public static void main14(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string = scanner.nextLine();
        System.out.println( func1(string));
    }


    public static void main13(String[] args) {
        String str = "hello world hello bit" ;
        String[] result = str.split(" ") ; // 按照空格拆分
        for(String s: result) {
            System.out.println(s);
        }
    }
    public static void main12(String[] args) {
        String str="198-8";
        String[] strings=str.split("-");//用-进行分割
        for(int i=0;i< strings.length;i++){//字符串数组
            System.out.println(strings[i]);//打印数组
        }
        //System.out.println(Arrays.toString(strings));
    }

    public static void main11(String[] args) {
        String str = "abcdef";
        System.out.println(str.contains("cde"));
    }

    public static void main10(String[] args) {
        byte[] bytes = {97, 98, 99};
        String str = new String(bytes);
        System.out.println(str);
        System.out.println();

    }


    public static boolean isNumber(String str) {
        char[] data = str.toCharArray();//把字符串转换为字符串组
        for (int i = 0; i < data.length; i++) {//遍历字符串组
            if (data[i] >= '0' && data[i] <= '9') {//为数字的条件
                return true;
            }
        }
        return false;
    }

    public static void main9(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string = scanner.nextLine();
        System.out.println(isNumber(string));
    }


    public static void main8(String[] args) {
        String str = "helloworld";
        // 将字符串变为字符数组
        char[] data = str.toCharArray();//定义一个字符数组
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + " ");
        }
        System.out.println();
        // 字符数组转为字符串
        String str1 = new String(data);
        System.out.println(str1); // 全部转换
        System.out.println(new String(data, 5, 5)); // 部分转换
    }


    public static void main7(String[] args) {
        char[] value = {'a', 'b', 'c', 'd'};
        String str = new String(value);
        System.out.println("字符串：" + str);
        String str1 = "hello";
        System.out.println(str1.charAt(0));//下标从0开始
    }

    public static void main6(String[] args) throws NoSuchFieldException, IllegalAccessException {
        String str = "abcdef";
        //获取class对象
        Class cl = String.class;
        //获取 String 类中的 value 字段. 这个 value 和 String 源码中的 value 是匹配的
        Field field = cl.getDeclaredField("value");
        // 将这个字段的访问属性设为 true
        field.setAccessible(true);
        // 把 str 中的 value 属性获取到.
        char[] value = (char[]) field.get(str);
        // 修改 value 的值
        value[0] = 'h';
        System.out.println(str);
    }

    public static void main5(String[] args) {
        String str1 = "abcdef";
        String str2 = "abefrh";
        //让str1和str2比较大小
        System.out.println(str1.compareTo(str2));
        System.out.println(str1.equals(str2));//false
        String str3 = null;
        //System.out.println(str3.equals("hello"));//发生空指针异常
        System.out.println("hello".equals(str3));//false(这样的写法更好一点）
    }

    /*
    String str6="hel"
    str6是一个变量-》运行的时候，才知道里面是多少；
    final String str6="hel"
    str6是一个常量-》编译的时候，确定了值是多少
     */
    public static void main4(String[] args) {
        final String str6 = "hel";
        String str7 = str6 + "lo";
        String str8 = "hello";
        System.out.println(str7 == str8);
    }

    public static void main3(String[] args) {
        String str1 = "abcdef";
        String str3 = "ab" + "cdef";//编译时期，就认为是abcdef了
        System.out.println(str1 == str3);//true
    }

    public static void main2(String[] args) {
        String str1 = "hello";
        String str2 = new String("hello");
        System.out.println(str1 == str2);//false
        String str3 = "hello";
        System.out.println(str1 == str3);//true str1的值和str3的值都是一样的，
        // 都是引用对象的地址
        System.out.println(str1.equals(str3));//true
        //str1这个引用，指向的对象和str3这个引用，指向的对象，内容相同还是不同
        System.out.println(str2.equals(str3));
    }

    public static void main1(String[] args) {
        String scr = "hello";

        String scr2 = new String("hello");

        char[] value = {'a', 'b', 'c'};
        String scr3 = new String(value);
    }
}

